JavaScript 的函數類似於數學的函數。從數學課中回憶,一個函數是類似這樣的式子 -> f(x) = 3x + 6
f 這個字母是此函數的名稱,x 是此函數的參數 parameter,3x + 6是函數的輸出值(主體),而且函數應該只返回一個值(一對一、多對一可以,但一對多不行)
在 f(x) = 3x + 6 這個函數中,x 被稱作是 parameter。但是當使用函數時, f(5)的數字 5 被稱為是 argument
除了 JavaScript 內建的 function 之外,也可以定義或客製化自己的 function
內建的 function : alert()
, prompt()
, ...
Function 是由一連串的程式碼組成,用來完成任務或是計算值
宣告 declare 一個 Function 的語法
// declaration, definition
function f() {
console.log("這是我的第一個function");
}
// 執行function exection, invoke a function, function invocation
// 調用函式 call a function
f();
一對一parameter
function sayHi(myParameter1) {
console.log("你好,我的名子是" + myParameter1);
}
sayHi("Phoebe");
給多個參數
function sayHi(myParameter1, myParameter2) {
console.log("你好,我的名子是" + myParameter1);
console.log("我今年" + myParameter2 + "歲");
}
sayHi("Phoebe", 23);
Function 中,若沒有 return
語句的話,function 將返回undefined
(JavaScript 的 function 默認的 return value)
// circle function的參數為一個半徑,功能為算出圓面積
// 第一種寫法(我自己試打)
function circle(r) {
return 3.14 * r * r;
}
console.log(circle(10) + circle(5)); // -> 392.5
// 第二種寫法(教學)
function circle(r) {
return 3.14 * r * r;
}
let result = circle(10) + circle(5);
console.log(result);
// 第三種寫法(教學)
function circle(r) {
console.log(3.14 * r * r);
}
let area1 = circle(10);
let area2 = circle(5);
console.log(area1 + area2);
異常寫法
// circle function的參數為一個半徑,功能為算出圓面積
function circle(r) {
console.log(3.14 * r * r);
}
console.log(circle(10));
// 會出現的值
// -> 314 Line3 function裡print circle(10)的數值
// -> undefined Line6 console.log()裡代出的數值
// 也就是說對console.log()來說circle(10)是一個undefined,因為沒有return值出來
// circle function的參數為一個半徑,功能為算出圓面積
function circle(r) {
console.log(3.14 * r * r);
}
let result = circle(10) + circle(5);
console.log(result);
// 會出現的值
// -> 314 Line3 function裡print circle(10)的數值
// -> 78.5 Line3 function裡print circle(5)的數值
// -> NaN Line7 console.log()裡print result
// 也就是說對result來說circle(10)、circle(5)皆是undefined,undefined + undefined = NaN
注意!!任何放在 return 語句底下的程式碼都不會被執行
小試身手
// 攝氏溫度轉換成華氏溫度
// Celsius to Fahrenheit
// °F = °C * 1.8 + 32
function converter(c) {
return c * 1.8 + 32;
}
let input = Number(prompt("請輸入攝氏溫度:"));
let result = converter(input);
alert("換算後的溫度為:" + result + "°F");
下一篇文章來學習array陣列、方法、reference Data Type 比較。